package com.tbit.main.service;


import com.tbit.main.pojo.PowerChangeLog;
import com.tbit.main.pojo.PowerChangeLogSta;

import java.util.List;
import java.util.Map;

/**
 * 换电记录
 *
 * @author Leon
 * 2019年11月12日 下午4:45:49
 */
public interface PowerChangeLogService {

    /**
     * 添加
     *
     * @param powerChangeLog
     */
    public Integer insert(PowerChangeLog powerChangeLog);

    /**
     * 按时间分组统计
     *
     * @param agentId
     * @param userType
     * @param usermainId
     * @param startTime
     * @param endTime
     * @return
     */
    public List<PowerChangeLogSta> groupByTime(Integer agentId, Integer userType, Integer usermainId,
                                               String startTime, String endTime, List<Integer> regionId, Integer machineType, Integer isValid);

    /**
     * 根据时间查询
     *
     * @param accountId
     * @param userMainId
     * @param startTime
     * @param endTime
     * @return
     */
    public List<PowerChangeLog> getByTime(Integer accountId, Integer userMainId, String startTime,
                                          String endTime, List<Integer> regionId, Integer machineType, Integer isValid,
                                          String userCode, String bateryNO, String batteryNOOld);

    /**
     * 根据运营区域和时间查总和
     *
     * @param accountId
     * @param startTime
     * @param endTime
     * @return
     */
    public Integer getByAccountIdTime(Integer accountId, String startTime, String endTime);

    /**
     * 根据分区和时间查总和
     *
     * @param regionId
     * @param startTime
     * @param endTime
     * @return
     */
    public Integer getByRegionIdTime(Integer regionId, String startTime, String endTime);

    /**
     * 根据运营区域和时间分组
     *
     * @param accountId
     * @param statDate
     * @param endDate
     * @return
     */
    List<Map<String, Object>> getGroupByDay(Integer accountId, String statDate, String endDate);

    /**
     * 根据ids查询
     *
     * @param powerChangeLogIds
     * @return
     */
    List<PowerChangeLog> getPowerChangeLogIds(List<Integer> powerChangeLogIds);

    /**
     * 根据ids查询
     *
     * @param powerChangeLogId
     * @return
     */
    PowerChangeLog getPowerChangeLogId(Integer powerChangeLogId);

    /**
     * 更新换电记录
     *
     * @param powerChangeLogId
     * @param newSoc
     */
    void update(Integer powerChangeLogId, Integer newSoc, Integer isValid, String remark, String auditTime);

    /**
     * 根据时间查询
     *
     * @param machineId
     * @param time
     * @return
     */
    List<PowerChangeLog> getByMachineIdTime(Integer machineId, String time, Integer isValid);

    /**
     * 判断是否符合条件
     *
     * @param userCode
     * @return
     */
    Integer workOrder(String userCode);

    /**
     * 更新换电记录
     */
    void updatePcl(PowerChangeLog powerChangeLog);
}
